/**
 * 
 */
package com.oauth.global.server.service;

import java.util.List;
import java.util.Set;

import com.oauth.components.client.beans.OAuthUrl;
import com.oauth.global.client.beans.AppInfoBean;
import com.oauth.global.client.beans.BirthdayClientBean;
import com.oauth.service.application.registry.beans.ApplicationInfoBean;
import com.oauth.service.generic.exception.OAuthServiceException;
import com.oauth.service.global.beans.GlobalDataType;

/**
 * @author asanthan
 * 
 */
public interface GlobalOAuthService {

	List<Long> updateStatus(Long pMemberId, String pStatusText, Set<Long> pApplicationIdSet);

	List<AppInfoBean> getApplicationImages(Long pMemberId, GlobalDataType pGlobalDataType)
			throws OAuthServiceException;

	List<BirthdayClientBean> getUpcomingBirthdays(Long pMemberId) throws OAuthServiceException;

	List<BirthdayClientBean> getUpcomingBirthdays(Long pMemberId, long pAppId);

	/**
	 * @param applicationId
	 * @return
	 */
	OAuthUrl getSignInUrl(Long applicationId);

	/**
	 * @param memberId
	 * @param applicationId
	 */
	void subscribe(Long memberId, Long applicationId);

	/**
	 * @param memberId
	 * @param applicationId
	 * @throws OAuthServiceException
	 */
	void unSubscribeApplication(Long memberId, Long applicationId) throws OAuthServiceException;

	/**
	 * @param memberId
	 * @return
	 * @throws OAuthServiceException
	 */
	List<ApplicationInfoBean> getUnsubscribedApplication(Long memberId)
			throws OAuthServiceException;

	/**
	 * @param memberId
	 * @return
	 * @throws OAuthServiceException
	 */
	List<ApplicationInfoBean> getSubscribedApplication(Long memberId) throws OAuthServiceException;
}
